/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dao;

/**
 *
 * @author Andre Luiz
 */
public class FormulaParametrosBD {
    
    /**
     * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso a uma string para chamada condicão mas que aqui ela não será alterada
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD(String aux){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        
        // veficar se existe dados em branco
        // caso exista removelas da lista de parametros
        for (int i = 0; i < bd.getColunas().size(); i++) {
                if(bd.getParametros().get(i).equals("null")||bd.getParametros().get(i).equals("")){
                    bd.getParametros().remove(i);
                    bd.getColunas().remove(i);
                    i--;
                }
        }
        return bd;
    }
    
    /**\
     * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, permitindo também a inserção 
     * de uma coluna e um parametro na função, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso a uma string para chamada condicão mas que aqui ela não será alterada
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @param coluna coluna adicionada 
     * @param parametro parametro adicionado
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD(String aux,String coluna, String parametro){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        // adiciona os a coluna e o parametro ao objeto
        bd.getColunas().add(coluna);
        bd.getParametros().add(parametro);
        // veficar se existe dados em branco
        // caso exista removelas da lista de parametros
        for (int i = 0; i < bd.getColunas().size(); i++) {
                if(bd.getParametros().get(i).equals("null")||bd.getParametros().get(i).equals("")){
                    bd.getParametros().remove(i);
                    bd.getColunas().remove(i);
                    i--;
                }
        }
        return bd;
    }
    
    /**
     * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso é possivel determinar a condicao 
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @param condicao String contendo a condicao para um eventual comando na linguagem SQL 
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD(String aux, String condicao){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        
        // veficar se existe dados em branco
        // caso exista removelas da lista de parametros
        for (int i = 0; i < bd.getColunas().size(); i++) {
                if(bd.getParametros().get(i).equals("null")||bd.getParametros().get(i).equals("")){
                    bd.getParametros().remove(i);
                    bd.getColunas().remove(i);
                    i--;
                }
        }
        bd.setCondicao(condicao);
        return bd;
    }
    
    /**
     * * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, permitindo também a inserção 
     * de uma coluna e um parametro na função, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso é possivel determinar a condicao 
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @param coluna coluna adicionada 
     * @param parametro parametro adicionado
     * @param condicao String contendo a condicao para um eventual comando na linguagem SQL 
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD(String aux,String coluna, String parametro, String condicao){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        // adiciona os a coluna e o parametro ao objeto
        bd.getColunas().add(coluna);
        bd.getParametros().add(parametro);
        // veficar se existe dados em branco
        // caso exista removelas da lista de parametros
        for (int i = 0; i < bd.getColunas().size(); i++) {
                if(bd.getParametros().get(i).equals("null")||bd.getParametros().get(i).equals("")){
                    bd.getParametros().remove(i);
                    bd.getColunas().remove(i);
                    i--;
                }
        }
        bd.setCondicao(condicao);
        return bd;
    }
    
    /**
     * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso a uma string para chamada condicão mas que aqui ela não será alterada
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD_Update(String aux){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        
        
        return bd;
    }
    
    /**\
     * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, permitindo também a inserção 
     * de uma coluna e um parametro na função, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso a uma string para chamada condicão mas que aqui ela não será alterada
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @param coluna coluna adicionada 
     * @param parametro parametro adicionado
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD_Update(String aux,String coluna, String parametro){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        // adiciona os a coluna e o parametro ao objeto
        bd.getColunas().add(coluna);
        bd.getParametros().add(parametro);
        
        return bd;
    }
    
    /**
     * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso é possivel determinar a condicao 
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @param condicao String contendo a condicao para um eventual comando na linguagem SQL 
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD_Update(String aux, String condicao){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                //System.out.println("coluna: "+aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
                //System.out.println("paramentro: "+aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        
        
        bd.setCondicao(condicao);
        return bd;
    }
    
    /**
     * * Cria os parametros essenciais para manipulação do Banco de Dados e o retorna em um objeto, esse obj possui as seguintes 
     * informações: Nome da tabela, uma lista com os nomes das colunas e uma outra lista contendo os dados, permitindo também a inserção 
     * de uma coluna e um parametro na função, as colunas que não possui dados seram discartadas,
     * ficando somente os campo que preechidos, além disso é possivel determinar a condicao 
     * @param aux String contendo o toStringParametros do objeto, onde estão todas ou (grande maioria) das colunas e parametros necessarios 
     * @param coluna coluna adicionada 
     * @param parametro parametro adicionado
     * @param condicao String contendo a condicao para um eventual comando na linguagem SQL 
     * @return Retorna um objeto do tipo ParametrosBD
     */
    public static ParametrosBD parametrosBD_Update(String aux,String coluna, String parametro, String condicao){
        ParametrosBD bd = new ParametrosBD();
        int posIni=0;
        int posFim=0;
        System.out.println(aux);
        posFim=aux.indexOf("{");
        bd.setTabela(""+aux.substring(posIni, posFim));
        
        while(posFim<aux.length()){
            posIni=posFim+1;
            posFim=aux.indexOf("=", posIni);
            
            if(posFim!=-1){
                bd.getColunas().add(aux.substring(posIni, posFim));
                posIni=posFim+1;
                posFim=aux.indexOf(",", posIni);
                bd.getParametros().add(aux.substring(posIni, posFim));
            }
            else
                posFim=Integer.MAX_VALUE;
        }
        // adiciona os a coluna e o parametro ao objeto
        bd.getColunas().add(coluna);
        bd.getParametros().add(parametro);
        
        bd.setCondicao(condicao);
        return bd;
    }
}
